#include "music_json.h"
#include <QDebug>


Music_Json::Music_Json(QObject *parent) : QObject(parent)
{
    
}

void Music_Json::setJsonData(const QString &json)
{
    my_songs.clear();
    
    parseJson(json);
}

QVector<SongInfo> Music_Json::getSongs() const
{
    return my_songs;
}

void Music_Json::parseJson(const QString &json)
{
    QJsonParseError error;
    QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8(), &error);

    if (error.error != QJsonParseError::NoError) {
        qWarning() << "JSON 解析错误：" << error.errorString();
        return;
    }

    if (!doc.isObject()) {
        qWarning() << "JSON 根节点不是对象";
        return;
    }

    QJsonObject rootObj = doc.object();
    QJsonObject resultObj = rootObj.value("result").toObject();
    QJsonArray songsArray = resultObj.value("songs").toArray();

    for (const QJsonValue &value : songsArray) {
        if (!value.isObject())
            continue;

        QJsonObject songObj = value.toObject();

        SongInfo info;
        info.song_id = songObj.value("id").toVariant().toLongLong();
        info.song_name = songObj.value("name").toString();

        // 获取歌手信息数组
        QJsonArray artistsArray = songObj.value("artists").toArray();
        if (!artistsArray.isEmpty()) {
            QJsonObject artistObj = artistsArray.at(0).toObject(); // 默认取第一个歌手
            info.singer_id = artistObj.value("id").toVariant().toLongLong();
            info.singer_name = artistObj.value("name").toString();
        }

        // 将该首歌的信息加入列表
        my_songs.append(info);
    }
}


